package command;

/**
 * 命令模式
 *  请求以命令的形式包裹在对象，并传给调用对象
 *  调用对象可以寻找处理该命令的合适对象，并传给对象，执行命令
 * 特点；
 *  解耦请求和接收方，请求发仅需发送命令，不关心命令怎么被接收执行的
 * 1. 抽象命令类：声明接口方法
 * 2. 具体的命令实现   像各种shell命令
 * 3. 实现者       执行shell脚本
 * 4. 调用者：处理，实现具体操作，像shell脚本
 * =>
 *  JDK中Thread，run方法为抽象命令，需要我们自己去实现，实现后的类为实现者，main方法或线程池为调用者
 */
public class CommandTest {
    public static void main(String[] args) {
        Context context = new Context();
        context.add(new CommandA(new CmdProcessA()));
        context.add(new CommandB(new CmdProcessB()));
        context.add(new CommandC(new CmdProcessC()));

        context.process();
    }
}
